﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using HA.Data;
using System.Windows.Controls;
namespace HA.ModFlow.Application
{
    public class DSVectorGrid3dViewModel : MDTVIViewModel
    {

        public DSVectorGrid3dViewModel(MDTVIViewModel parent, DSVectorGrid3d ds)
            : base(parent, false)
        {


            this._imageSource = VMImageSource.vector;

            this._isShowCheck = false;


            this._contextMenu = new System.Windows.Controls.ContextMenu();
            MenuItem menu = new MenuItem();
            menu.Header = "查看值";
            menu.Command = Data2Commands.ViewVectorValue;
            //menu.CommandParameter = ds ;
            this._contextMenu.Items.Add(menu);

            this._dataset = ds;


        }



        DSVectorGrid3d _dataset;

        public DSVectorGrid3d Dataset
        {
            get { return _dataset; }
            set { _dataset = value; }
        }



        public override string Desc
        {
            get
            {
                return HAUtil.LanguageTranslater.ENToCN(this._dataset.Name);
            }
        }


        protected override void OnSelectedChanged()
        {


            if (this.IsSelected)
            {


                //设置当前集合


                //。。。。。。。。。。。。小李。。。。。。。。。。。。。

                //该处的触发，一定是点击了ModflowResult中的向量数据，可能情况：1，从无到有，2，从一个ModflowResult到另一个ModflowResult中的向量
               
                //在不同的  ModflowResult  之间进行切换   暂时先把主程序的CellCenterDataSet3d和DSGrid3d  清理了吧
                //最好能根据新点击的DSVectorGrid3d找到所在的DSGrid3dCollecion并显示其中的DSGrid3d和CellCenterDataSet3d  但是目前以我对
                //该部分设计的理解  暂时做不到 呵呵

                //综上所述  暂时直接清空主程序中的CurrentDSGrid  和 CurrentDSData  数据

                //ProjectSerivce.DefaultService.Project.CurrentDSGrid = null;
                //ProjectSerivce.DefaultService.Project.CurrentDSData = null;

                //if (ProjectSerivce.DefaultService.Project.CurentFlowVectorData != null)
                //{
                //    if (((DSGrid3dCollecionViewModel)this.Parent).Collecion != null)
                //    {
                //        if (((DSGrid3dCollecionViewModel)this.Parent).Collecion.Key.ToString().Trim().Contains("ModflowResult"))
                //        {                        
                //            ProjectSerivce.DefaultService.Project.CurrentDSGrid = null;
                //            ProjectSerivce.DefaultService.Project.CurrentDSData = null;
                //        }
                //    }
                //}


                if (ProjectService.DefaultService.Project.CurrentDSGrid != null)
                {
                    if (((DSGrid3dCollecionViewModel)this.Parent).Collecion != null)
                    {
                        if (((DSGrid3dCollecionViewModel)this.Parent).Collecion.Key.ToString().Trim().Contains("ModflowResult"))
                        {

                            //包括两种情况：1，在同一个结果数据集中的两个DSGrid3d 之间相互点击；2，从一个MF结果的DSGrid3d到另一个MF结果的DSGrid3d

                            //该处的触发，一定是点击了ModflowResult中的向量数据，可能情况：1，从无到有，2，从一个ModflowResult到另一个ModflowResult中的向量

                            //在不同的  ModflowResult  之间进行切换   暂时先把主程序的CellCenterDataSet3d和DSGrid3d  清理了吧
                            //最好能根据新点击的DSVectorGrid3d找到所在的DSGrid3dCollecion并显示其中的DSGrid3d和CellCenterDataSet3d  但是目前以我对
                            //该部分设计的理解  暂时做不到 呵呵

                            //综上所述  暂时直接清空主程序中的CurrentDSGrid  和 CurrentDSData  数据
                            //更新向量

                            if (((DSGrid3dCollecionViewModel)this.Parent).Collecion.Collecion != null)
                            {

                                bool isInTheSameDSGrid3dCollecion = false;
                                foreach (DSGrid3d item in ((DSGrid3dCollecionViewModel)this.Parent).Collecion.Collecion)
                                {
                                    if (item == ProjectService.DefaultService.Project.CurrentDSGrid)
                                    {
                                        isInTheSameDSGrid3dCollecion = true;
                                        break;
                                    }
                                }

                                if (isInTheSameDSGrid3dCollecion)
                                {
                                    //当前主程序显示的DSGrid3d和新点击的在同一个DSGrid3dCollecion

                                }
                                else
                                {
                                    //在不同的  ModflowResult  之间进行切换   暂时让向量不显示吧

                                    ProjectService.DefaultService.Project.CurrentDSGrid = null;
                                    ProjectService.DefaultService.Project.CurrentDSData = null;


                                }
                            }

                            //ProjectSerivce.DefaultService.Project.CurentFlowVectorData = null;

                        }

                    }
                }
                else 
                {

                    if (ProjectService.DefaultService.Project.CurrentDSData  != null)
                    { 
                           //这种情况是 当前显示CellCenter3d为顶部高程等

                        ProjectService.DefaultService.Project.CurrentDSData = null;
                    }
                
                
                }
                //。。。。。。。。。。。。小李。。。。。。。。。。。。。

                if (this._dataset.IsMultiDataset)
                {
                    UIModule.DefaultModule.ShowTimeStepView(true);

                    
                }

                else
                {

                    UIModule.DefaultModule.ShowTimeStepView(false);
 
                }


                UIModule.DefaultModule.ProjectViewModel.TsvViewModel.VectorGrid = this._dataset;

                UIModule.DefaultModule.RibbonV2ViewModel.ViewOpViewModel.ToolVM.CurrentTool = APPTOOLMODE.GRID3D;


            }

            else
            {

                UIModule.DefaultModule.ShowTimeStepView(false);

            }


        }


    }
}
